const criteria = {}

/**
 * 生成等于条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.eq = (name, value) => {
  return {
    name: name,
    operator: 'eq',
    value: value
  }
}

/**
 * 生成大于条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.gt = (name, value) => {
  return {
    name: name,
    operator: 'gt',
    value: value
  }
}

/**
 * 生成大于等于条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.ge = (name, value) => {
  return {
    name: name,
    operator: 'ge',
    value: value
  }
}

/**
 * 生成小于条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.lt = (name, value) => {
  return {
    name: name,
    operator: 'lt',
    value: value
  }
}

/**
 * 生成小于等于条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.le = (name, value) => {
  return {
    name: name,
    operator: 'le',
    value: value
  }
}

/**
 * 生成 左like 条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.lk = (name, value) => {
  return {
    name: name,
    operator: 'lk',
    value: value
  }
}

/**
 * 生成 左右like 条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.ll = (name, value) => {
  return {
    name: name,
    operator: 'll',
    value: value
  }
}

/**
 * 生成 右like 条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.rl = (name, value) => {
  return {
    name: name,
    operator: 'rl',
    value: value
  }
}

/**
 * 生成 in 条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.in = (name, value = []) => {
  return {
    name: name,
    operator: 'in',
    value: value
  }
}

/**
 * 生成 between 条件
 * @param name 属性名
 * @param value 属性值
 * @returns {{name, value, operator: string}}
 */
criteria.bt = (name, value = []) => {
  return {
    name: name,
    operator: 'bt',
    values: value
  }
}

/**
 * 生成排序
 * @param name 属性名
 * @param asc 是否正序
 * @returns {{asc: boolean, name}}
 */
criteria.order = (name, asc = true) => {
  return {
    name: name,
    asc: asc
  }
}

export default criteria
